package pro.shushi.pamirs.framework.compute.emnu;

import pro.shushi.pamirs.meta.annotation.Errors;
import pro.shushi.pamirs.meta.common.enmu.ExpBaseEnum;

@Errors(displayName = "系统元计算错误枚举")
public enum ComputeExpEnumerate implements ExpBaseEnum {

    SYSTEM_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006000, "系统异常"),
    BASE_M2M_RELATION_THROUGH_MODEL_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006001, "多对多配置常量时，through必须是手动定义的模型或对应的relationModel和ReferenceModel中有对应字段"),
    BASE_RELATION_NO_RELATION_FIELDS_NO_PK_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006002, "该模型未配置主键，关系字段不可缺省"),
    BASE_RELATION_NO_REFERENCE_FIELDS_NO_PK_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006003, "该模型未配置主键，关联字段不可缺省"),
    BASE_RELATION_NO_THROUGH_RELATION_FIELDS_NO_PK_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006004, "该模型未配置主键，中间模型关系字段不可缺省"),
    BASE_RELATION_NO_THROUGH_REFERENCE_FIELDS_NO_PK_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006005, "该模型未配置主键，中间模型关联字段不可缺省"),
    BASE_RELATION_O2M_NO_REFERENCE_FIELDS_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006006, "一对多关系，若关联模型不存在关系模型同名字段，关联字段referenceFields不可缺省"),
    BASE_MODEL_CONFIG_IS_NOT_EXISTS_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006007, "请检查模块依赖，模型不存在"),
    BASE_COMPUTE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006008, "计算错误"),
    BASE_SERIALIZER_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006009, "找不到对应的序列化方式"),
    BASE_UN_SERIALIZER_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006010, "找不到对应的反序列化方式"),
    BASE_NO_VERSION_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006011, "版本号为空"),
    BASE_MODULE_DEPENDENT_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006012, "请检查模块依赖"),
    BASE_ONLY_ONE_AUTO_INCREMENT_ALLOWED(ERROR_TYPE.SYSTEM_ERROR, 10006013, "only one auto increment allowed"),
    BASE_RELATED_FIELD_CONFIG_IS_NOT_EXISTS_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006014, "配置错误，请检查字段配置与模块依赖"),
    BASE_RELATION_FIELD_CONFIG_IS_NOT_EXISTS_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006015, "未配置关联字段"),
    BASE_CHECK_REQUIRED_ERROR(ERROR_TYPE.DATA_ERROR, 10006016, "数据为空"),
    BASE_FIELD_NOT_MODEL_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006017, "模型字段类型错误"),
    BASE_CONVERT_RELATION_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006018, "关系转换错误"),
    BASE_CHECK_MODEL_NAME_ERROR(ERROR_TYPE.DATA_ERROR, 10006019, "api名称仅支持数字、字母"),
    BASE_CHECK_FIELD_NAME_ERROR(ERROR_TYPE.DATA_ERROR, 10006020, "api名称仅支持数字、字母"),
    BASE_CHECK_COLUMN_NAME_ERROR(ERROR_TYPE.DATA_ERROR, 10006021, "存储名称仅支持数字、字母、下划线"),
    BASE_CHECK_TABLE_NAME_ERROR(ERROR_TYPE.DATA_ERROR, 10006022, "表名错误"),
    BASE_CHECK_COMMA_EXPRESSION_ERROR(ERROR_TYPE.DATA_ERROR, 10006023, "逗号表达式错误"),
    BASE_CHECK_DOT_EXPRESSION_ERROR(ERROR_TYPE.DATA_ERROR, 10006024, "点表达式错误"),
    BASE_CHECK_MODULE_MODULE_ERROR(ERROR_TYPE.DATA_ERROR, 10006025, "模块编码错误"),
    BASE_CHECK_MODULE_NAME_START_WITH_EN(ERROR_TYPE.DATA_ERROR, 10006026, "api名称必须以字母开头"),
    BASE_CHECK_MODULE_ABBR_ERROR(ERROR_TYPE.DATA_ERROR, 10006027, "模块简称错误，仅支持小写字母和数字且不能超过8位字符"),
    BASE_LTYPE_IS_INVALID_ERROR(ERROR_TYPE.DATA_ERROR, 10006028, "不支持该类型"),
    BASE_LTYPET_IS_INVALID_ERROR(ERROR_TYPE.DATA_ERROR, 10006029, "不支持该类型"),
    BASE_MODULE_VERSION_FORMAT_ERROR(ERROR_TYPE.DATA_ERROR, 10006030, "模块版本格式错误，请配置大中小三个版本并由点字符隔开"),
    BASE_MODULE_VERSION_NOT_DIGIT_ERROR(ERROR_TYPE.DATA_ERROR, 10006031, "模块版本格式错误，版本中含有不是数字和小数点的字符"),
    BASE_MULTI_TABLE_INHERITED_NO_PKS_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006032, "多表继承配置错误，未配置父模型主键"),
    BASE_INHERITED_FORBIDDEN_MODIFY_PKS_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006033, "扩展继承和代理继承不能修改父模型主键"),
    BASE_INHERITED_RETRY_COMPUTE_PKS_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006034, "扩展继承和代理继承错误"),
    BASE_MODEL_NOT_EXISTS_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006035, "模型不存在"),
    BASE_MODULE_DEPENDENT_OR_MODEL_CONFIG_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006036, "配置错误，请检查模型配置与模块依赖"),
    BASE_THROUGH_MODEL_TYPE_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006037, "请检查多对多关系模型是否继承关系模型抽象基类或标识为关系模型"),
    BASE_THROUGH_MODEL_PK_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006038, "已经设置了ID为主键，设置的无效主键"),
    BASE_THROUGH_MODEL_PK2_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006039, "主键不在关联字段或关系字段中，设置的无效主键"),
    BASE_INVERSE_RELATION_NO_RELATION_FIELDS_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006040, "反转关系，关系字段不可缺省"),
    BASE_INVERSE_RELATION_NO_REFERENCE_FIELDS_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006041, "反转关系，关联字段不可缺省"),
    BASE_CHECK_FUNCTION_IS_NOT_EXIST_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006042, "校验函数不存在"),
    BASE_RELATION_FIELD_IS_NOT_EXIST_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006043, "关联模型关联字段未配置"),
    BASE_RELATION_FIELD_CONFIG_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006044, "关系字段配置错误"),
    BASE_DATA_DICTIONARY_MODULE_DEPENDENT_ERROR(ERROR_TYPE.SYSTEM_ERROR, 10006045, "模块依赖错误"),
    BASE_MODEL_VALIDATION_ERROR(ERROR_TYPE.DATA_ERROR, 10006046, "模型约束校验错误"),
    BASE_MODEL_FIELD_VALIDATION_ERROR(ERROR_TYPE.DATA_ERROR, 10006047, "模型字段约束校验错误"),
    BASE_CHECK_FIELD_REQUIRED_ERROR(ERROR_TYPE.DATA_ERROR, 10006048, "必填字段为空"),
    BASE_CHECK_FIELD_MIN_ERROR(ERROR_TYPE.DATA_ERROR, 10006049, "必须大于或等于"),
    BASE_CHECK_FIELD_MAX_ERROR(ERROR_TYPE.DATA_ERROR, 10006050, "必须小于或等于"),
    BASE_CHECK_FIELD_SIZE_MIN_ERROR(ERROR_TYPE.DATA_ERROR, 10006051, "长度必须大于或等于"),
    BASE_CHECK_FIELD_SIZE_MAX_ERROR(ERROR_TYPE.DATA_ERROR, 10006052, "长度必须小于或等于"),
    BASE_CHECK_FIELD_DATE_MIN_ERROR(ERROR_TYPE.DATA_ERROR, 10006053, "必须晚于"),
    BASE_CHECK_FIELD_DATE_MAX_ERROR(ERROR_TYPE.DATA_ERROR, 10006054, "必须早于"),
    BASE_CHECK_MODEL_MODEL_ERROR(ERROR_TYPE.DATA_ERROR, 10006055, "模型编码必须字母开头，只能有字母数字点下划线，不能以点结尾，最后一个点后只能有字母和数字且以字母开头"),
    BASE_CHECK_MODEL_NAME_START_WITH_EN(ERROR_TYPE.DATA_ERROR, 10006056, "api名称必须以字母开头"),
    BASE_CHECK_FIELD_NAME_START_WITH_EN(ERROR_TYPE.DATA_ERROR, 10006057, "api名称必须以字母开头"),
    BASE_CHECK_FIELD_FIELD_START_WITH_EN(ERROR_TYPE.DATA_ERROR, 10006058, "字段编码必须以字母开头"),
    BASE_CHECK_FIELD_FIELD_ERROR(ERROR_TYPE.DATA_ERROR, 10006059, "字段编码仅支持数字、字母");

    private final ERROR_TYPE type;

    private final int code;

    private final String msg;

    ComputeExpEnumerate(ERROR_TYPE type, int code, String msg) {
        this.type = type;
        this.code = code;
        this.msg = msg;
    }
}
